package aceim.app.view.page.accounts;
import java.util.List;
import aceim.app.MainActivity;
import aceim.app.R;
import aceim.app.dataentity.Account;
import aceim.app.dataentity.listeners.IHasAccountList;
import aceim.app.utils.ViewUtils;
import aceim.app.utils.linq.KindaLinq;
import aceim.app.utils.linq.KindaLinqRule;
import aceim.app.view.page.Page;
import android.content.Context;
import android.content.Intent;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import com.androidquery.AQuery;
public class Accounts extends Page implements IHasAccountList {
private final List<Account> mAccounts;
private AccountsAdapter mAdapter;
public Accounts(List<Account> accounts) {
this.mAccounts = accounts;
}
private final OnClickListener mGetAccountEditorClickListener = new OnClickListener() {
@Override
public void onClick(View v) {
Page.addAccountEditorPage(((MainActivity)getMainActivity()).getScreen(), null);
}
};
private final OnClickListener mSearchInPlayClickListener = new OnClickListener() {
@Override
public void onClick(View v) {
Intent i = ViewUtils.getSearchPluginsInPlayStoreIntent(null);
getMainActivity().startActivity(i);
}
};
private final OnClickListener mUtilsListener = new OnClickListener() {
@Override
public void onClick(View v) {
Page.getUtilsPage(getMainActivity().getScreen());
}
};
@Override
public View createView(LayoutInflater inflater, ViewGroup group, Bundle saved) {
View view = inflater.inflate(R.layout.accounts, group, false);
mAdapter = new AccountsAdapter((MainActivity) getMainActivity(), mAccounts);
AQuery aq = new AQuery(view);
aq.id(R.id.list).adapter(mAdapter);
aq.id(R.id.add).clicked(mGetAccountEditorClickListener);
aq.id(R.id.search_play_store).clicked(mSearchInPlayClickListener);
aq.id(R.id.utils).clicked(mUtilsListener);
return view;
}
@Override
public Drawable getIcon(Context context) {
return context.getResources().getDrawable(R.drawable.ic_menu_allfriends);
}
@Override
public String getTitle(Context context) {
return context.getResources().getString(R.string.accounts);
}
@Override
public void onAccountAdded(Account account) {
mAdapter.add(account);
}
@Override
public void onAccountModified(final Account account) {
Account acc = KindaLinq.from(mAccounts).where(new KindaLinqRule<Account>() {
@Override
public boolean match(Account t) {
return t.getServiceId() == account.getServiceId();
}
}).first();
acc.merge(account);
mAdapter.notifyDataSetChanged();
}
@Override
public void onAccountRemoved(Account account) {
mAdapter.remove(account);
}
}